home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / etc / hotplug / pci.rc < prev    next >
Text File  |  2006-05-01  |  2KB  |  102 lines

  1. #!/bin/sh
  2. # vim: syntax=sh
  3. #
  4. # pci.rc    mostly to recover lost boot-time pci hotplug events
  5. #
  6. # $Id: pci.rc,v 1.12 2004/09/20 21:36:47 kroah Exp $
  7. #
  8.  
  9. PATH=/sbin:/bin:/usr/sbin:/usr/bin
  10.  
  11. cd /etc/hotplug
  12. . ./hotplug.functions
  13.  
  14. pci_boot_events ()
  15. {
  16.     # make sure the pci agent will run
  17.     ACTION=add
  18.     PCI_CLASS=0
  19.     PCI_ID=0:0
  20.     PCI_SLOT=0:0.0
  21.     PCI_SLOT_NAME=0:0.0
  22.     PCI_SUBSYS_ID=0:0
  23.     export ACTION PCI_CLASS PCI_ID PCI_SLOT PCI_SLOT_NAME PCI_SUBSYS_ID
  24.  
  25.     if [ -d /sys/bus ]; then
  26.     # 2.6 kernels
  27.     if [ -d /sys/bus/pci/devices/ ]; then
  28.         cd /sys/bus/pci/devices/
  29.         for PCI_DEVICE in *; do
  30.         set `echo $PCI_DEVICE \
  31.             | sed -e 's/\([^:]*\):\(.*\):\(.*\)\.\(.*\)/\1 \2 \3 \4/'`
  32.         PCI_SLOT_NAME=$2:$3.$4
  33.         PCI_CLASS="`cat $PCI_DEVICE/class`"
  34.         PCI_CLASS=${PCI_CLASS#0x}
  35.         vendor_id=`cat $PCI_DEVICE/vendor`
  36.         device_id=`cat $PCI_DEVICE/device`
  37.         PCI_ID="${vendor_id#0x}:${device_id#0x}"
  38.         sub_vendor_id=`cat $PCI_DEVICE/subsystem_vendor`
  39.         sub_device_id=`cat $PCI_DEVICE/subsystem_device`
  40.         PCI_SUBSYS_ID="${sub_vendor_id#0x}:${sub_device_id#0x}"
  41.         /sbin/hotplug pci
  42.         done
  43.     fi
  44.     else
  45.     # 2.4 kernels
  46.     LISTER=`which pcimodules`
  47.     if [ "$LISTER" = "" ] || [ ! -f /proc/bus/pci/devices ] || [ ! -x pci.agent ]; then
  48.         echo $"** can't synthesize pci hotplug events"
  49.         return 1
  50.     fi
  51.  
  52.     # these notifications will be handled by pcimodules
  53.     for BUS in `cd /proc/bus/pci;find * -type d -print`; do
  54.         for SLOT_FUNC in `cd /proc/bus/pci/$BUS; echo *`; do
  55.         PCI_SLOT=$BUS:$SLOT_FUNC
  56.         /sbin/hotplug pci
  57.         done
  58.     done
  59.     fi
  60.  
  61.     return 0
  62. }
  63.  
  64. # See how we were called.
  65. case "$1" in
  66.   start)
  67.     pci_boot_events
  68.         ;;
  69.   stop)
  70.     # echo $"pci stop -- ignored"
  71.         ;;
  72.   status)
  73.     echo $"PCI Status for kernel: "  `uname -srm`
  74.     echo ''
  75.  
  76.     if [ -f /proc/bus/pci/devices ]; then
  77.         COUNT=`ls /proc/bus/pci | wc -l`
  78.         if [ $COUNT -gt 1 ]; then
  79.         COUNT=`expr $COUNT - 1`
  80.         echo $"PCI up; bus count is $COUNT"
  81.         if [ -x /sbin/lspci ]; then
  82.             /sbin/lspci
  83.         fi
  84.         else
  85.         echo $"no PCI busses?"
  86.         fi
  87.         echo ''
  88.     else
  89.         echo $"no PCI /proc support?"
  90.     fi
  91.     echo ''
  92.  
  93.     ;;
  94.   restart)
  95.     # always invoke by absolute path, else PATH=$PATH:
  96.     $0 stop && $0 start
  97.     ;;
  98.   *)
  99.         echo $"Usage: $0 {start|stop|status|restart}"
  100.         exit 1
  101. esac
  102.